class Person:
    def __init__(self , name , age , job):
        self.name = name
        self.age = age
        self.job = job

    def __str__(self):
        return f"{self.name} -- {self.age} --{self.job}"

p1 = Person("smith" , 20 , "java工程师")
p2 = Person("king" , 18 , "学生")
p3 = Person("HSP" , 26 , "老师")
my_list = [p1 , p2 , p3]

#现在的需求是对列表按照年龄从大到小进行排序
"""
解决思路：
    1.解决方案,冒泡排序
    2.使用内置函数进行处理  sort
"""

#对列表进行操作的时候，其实是把原来的数据直接就换了  所以 这里不需要返回值
#因为熟悉了  所以 可以直接写   熟能生巧
def bubble_sort(my_list : list[Person]):
    for i in range(0 , len(my_list) - 1):
        for j in range(0 , len(my_list) - i - 1):
            if my_list[j].age < my_list[j + 1].age:
                my_list[j] , my_list[j + 1] = my_list[j + 1] , my_list[j]

# bubble_sort(my_list)
#解读
#1.key=lambda ele : ele.age 表示我指定按照列表元素的age属性进行排序
#reverse = True  代表从大到小排序  reverse = False 代表从小到大排序
my_list.sort(key=lambda ele: ele.age , reverse=False)

for p in my_list:
    print(p)
